# -*- coding:utf-8 -*-

"""
找到元素后，执行的动作
"""

"""
 # Get attribute of current active element
  attr = driver.switch_to.active_element.get_attribute("title")
"""
from selenium.webdriver.remote.webelement import WebElement
from selenium.webdriver.common.keys import Keys


class Actions:
    def __init__(self, element: WebElement):
        self.element = element

    def click(self):
        self.element.click()

    def sendKeys(self, keysStr):
        """
        1、发送键位，输入webdriver，按下ENTER（from selenium.webdriver.common.keys import Keys）
        .send_keys("webdriver" + Keys.ENTER)


        2、上传文件
        driver.find_element(By.ID,"file-upload").send_keys("selenium-snapshot.jpg")
        driver.find_element(By.ID,"file-submit").submit()
        if(driver.page_source.find("File Uploaded!")):
            print("file upload success")
        else:
            print("file upload not successful")

        :param keysStr:
        :return:
        """
        self.element.send_keys(keysStr)

    def clear(self):
        """
        要求元素 可编辑, 且 可重置.
        :return:
        """
        self.element.clear()

    def submit(self):
        self.element.submit()

    def is_selected(self) -> bool:
        """
        此方法确认相关的元素是否 已选定，常用于复选框、单选框、输入框和选择元素中。返回一个布尔值
        driver.find_element(By.CSS_SELECTOR, "input[type='checkbox']:first-of-type").is_selected()
        :return:
        """
        return self.element.is_selected()

    def is_enabled(self) -> bool:
        """
        此方法用于检查所连接的元素在网页上是启用还是禁用状态。 返回一个布尔值
        :return:
        """
        return self.element.is_enabled()

    def is_displayed(self) -> bool:
        """
        此方法用于检查连接的元素是否正确显示在网页上. 返回一个布尔值
        :return:
        """
        return self.element.is_displayed()

    def tag_name(self):
        """
        获取元素标签名
        :return:
        """
        return self.element.tag_name

    def value_of_css_property(self, css_property_str):
        """
        driver.find_element(By.LINK_TEXT, "More information...").value_of_css_property('color')
        获取元素CSS值
        :return:
        """
        return self.element.value_of_css_property(css_property_str)

    def text(self):
        """
        driver.find_element(By.CSS_SELECTOR, "h1").text
        获取特定元素渲染后的文本内容。
        :return:
        """
        return self.element.text

    def get_attribute(self, attributeStr):
        """
        # Identify the email text box
        driver.find_element(By.NAME, "email_input").get_attribute("value")
        获取与 DOM 属性关联的运行时的值。 它返回与该元素的 DOM 特性或属性关联的数据。
        :return:
        """
        return self.element.get_attribute(attributeStr)


